# 使用Python官方镜像作为基础镜像（使用更稳定的3.11版本以兼容依赖）
FROM python:3.12-slim

# 设置工作目录
WORKDIR /app

# 安装系统依赖（合并update和install，使用--no-install-recommends减小镜像体积）
RUN apt-get update && apt-get install -y --no-install-recommends \
    gcc \
    python3-dev \
    sqlite3 \
    procps \
    && rm -rf /var/lib/apt/lists/*

# 创建非root用户来运行应用（提高安全性）
RUN groupadd -r appuser && useradd -r -g appuser appuser

# 复制requirements.txt文件
COPY requirements.txt .

# 安装Python依赖（使用阿里云镜像源加速）
RUN pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt

# 复制项目代码
COPY . .

# 创建uploads目录和backups目录并设置权限
RUN mkdir -p uploads/icons guzian_app/backups && \
    chmod -R 775 uploads guzian_app/backups . && \
    chown -R appuser:appuser uploads guzian_app/backups .

# 暴露端口
EXPOSE 8000

# 设置环境变量
ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

# 切换到非root用户
USER appuser

# 确保backups目录存在并可写
RUN mkdir -p /app/guzian_app/backups && \
    chmod -R 775 /app/guzian_app/backups && \
    chown -R appuser:appuser /app/guzian_app/backups

# 设置环境变量，确保Python程序能够正确处理时区
ENV TZ=Asia/Shanghai \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

# 启动命令 - 使用shell形式以确保环境变量正确加载
CMD ["python", "app.py"]